From 85d4d8cb0553b453d0ed843299072c5ab6a527da Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Fri, 1 Aug 2008 09:54:54 +0100 Subject: [PATCH] ioemu, passthrough: fix flag for expansion rom base address register. pt_bar_reg_parse() is called for expansion rom base address register. Currently it returns PT_BAR_FLAG_MEM if bit 0 is 0. It returns PT_BAR_FLAG_IO if bit 0 is 1. But bit 0 in expansion rom base address register is enable bit. If bit 0 is 1 for some reason, it returns PT_BAR_FLAG_IO. Expansion rom is mapped to memory space. It should return PT_BAR_FLAG_MEM. After applying this patch, it returns PT_BAR_FLAG_MEM regardless of bit 0, when it is called for expansion rom base address register. Signed-off-by: Yuji Shimada --- tools/ioemu/hw/pass-through.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/ioemu/hw/pass-through.c b/tools/ioemu/hw/pass-through.c index 428845f2c9..ce24034de0 100644 --- a/tools/ioemu/hw/pass-through.c +++ b/tools/ioemu/hw/pass-through.c @@ -1528,6 +1528,13 @@ static int pt_bar_reg_parse( if (!r->size) goto out; + /* for ExpROM BAR */ + if (index == PCI_ROM_SLOT) + { + bar_flag = PT_BAR_FLAG_MEM; + goto out; + } + /* check BAR I/O indicator */ if (d->config[reg->offset] & PCI_BASE_ADDRESS_SPACE_IO) bar_flag = PT_BAR_FLAG_IO; -- 2.30.2